R u Ready? HS2025 | Psychologie der Digitalisierung - Einheit 11

Sandra Grinschgl, Aaron Friedli, Lars Schilling

R u Ready? Reproduzierbare Datenaufbereitung und -analyse mit R

HS 2025


LV-Leitung: Dr. Sandra Grinschgl / MSc. Aaron Friedli
Tutor: BSc. Lars Schilling


11. Einheit, 24.11.2025

Heute:

Fragen Hands On Block 5?

Abbildungen: Visualize

Visualisierungen: Reproduktion der Figures aus Grinschgl 2021

Visualisierungen

ggplot2()

Sehr flexibles Paket.

  • Plots werden schrittweise “befüllt”
  • Alle plots beginnen mit ggplot() und dem verwendeten Datensatz

  • Mit aes() definieren wir die elemantaren Elemente der Plots - Variablen die geplottet werden sollen

  • mit + können wir geoms, layers und weitere Elemente hinzufügen.

ggplot2() - Cheatsheet

Argumente von ggplot()

  • Variablen als Aesthetic Mappings definieren

  • Mapping ist immer das zweite Argument (nach dem Datensatz), “call” kann also auch verkürzt werden.

p <- penguins |>
  ggplot( 
       mapping = 
         aes(x = body_mass_g, 
           y = bill_length_mm))
p

ggplot() - Geoms

  • Layers Hinzufügen z.B. ein geom mit +
  • Geoms = geometrische Objekte, die die Daten darstellen (z.B. Punkte, Linien)
  • Muss je nachdem welche Daten man hat und wie man diese darstellen will ausgewählt werden, z.B.
    • Kategoriale Variable: geom_bar()
    • Kontinuierliche Variable: geom_histogram()
    • 2 kontinuierliche Variablen: geom_point(), geom_line()
    • 2 Kategoriale Variablen: geom_count()
    • Kategorial + Kontinuierlich: geom_boxplot(), geom_violin()

ggplot() - Geoms

p <- p +
  geom_point()

p

ggplot() - Layers

  • Mappings können auch in den Layers definiert werden
p <- p + 
  geom_point(aes(x = body_mass_g, 
           y = bill_length_mm))

p

ggplot() - Layers

  • Titel + Achsenbeschriftung (= labs), Regressionslinien, vereinfachtes Design
p <- p +
  geom_smooth(aes(group = 1), method = "lm") +
  theme_classic() +
  labs(
    title = "Relationship Between Body Mass and Bill Length",
    x = "Body Mass (g)",
    y = "Bill Length (mm)"
  )

p

mit theme_ können verschiedene Formatierungen gewählt werden. theme_classic wird typischerweise für APA7 passende Formatierungen gewählt.

ggplot() - Verschiedene Layers/Geoms kombiniert

p2 <- penguins |>
  ggplot(aes(x = island, y = body_mass_g, color = island, shape = sex)) +
  geom_boxplot() +
  geom_jitter(alpha = 0.5)+
  theme_classic()+
  labs(
    title = "Body Mass Per Island and Species", x = "Island", y = "Body Mass (g)")
p2

Abbildungen speichern

ggsave(filename = "my_first_plot.png", plot = p2)

Weitere Ressourcen:

Viel, viel mehr Möglichkeiten als wir hier besprechen, siehe z.B.:

Auflistung von Argumenten

ggplot2 Cheatsheet

R for Data Science – Kapitel 9 & 10:
Kapitel „Layers“

Kapitel „EDA“

Weitere Textelemente in Abbildungen (Kapitel 11)

Hier findet man auch weitere Visualisierungsmöglichkeiten & Informationen dazu, wie man verschiedene Plots neben/untereinander abbilden kann.

Top 50 Visualisierungen mit ggplot2

für Animationen, Signifikanztests, Wordclouds usw.

Inferenzstatistik

Erinnerung Statistik

  • Forschungsfrage/ Hyptothese aufstellen und Auswahl passender Testverfahren 👉 Bereits im Datenanalyseplan gemacht

Entscheidungsbaum statistischer Testverfahren



Entscheidungsbaum UZH

Korrelationen

  • Linearer Zusammenhang zweier Variablen
  • Positive Korrelation = hohe Ausprägungen einer Variable hängen mit hohen Ausprägungen einer anderen Variable zusammen
  • Negative Korrelation = Hohe Ausprägungen einer Variable hängen mit niedrigen Ausprägungen einer anderen Variable zusammen
  • Korrelationskoeffizient r kann von -1 bis +1 gehen
  • Voraussetzung: Normalverteilung der Residuen (siehe EH 10)
  • Nicht-parametrische Alternative: Spearman Korrelation
cor.test(penguins$bill_length_mm, penguins$body_mass_g)

    Pearson's product-moment correlation

data:  penguins$bill_length_mm and penguins$body_mass_g
t = 13.654, df = 340, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5220040 0.6595358
sample estimates:
      cor 
0.5951098 

Notation

options(scipen = 999)
cor.test(penguins$bill_length_mm, penguins$body_mass_g)

    Pearson's product-moment correlation

data:  penguins$bill_length_mm and penguins$body_mass_g
t = 13.654, df = 340, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5220040 0.6595358
sample estimates:
      cor 
0.5951098 

Hinweise zur linearen Regression

  • Testet den Zusammenhang zwischen zwei Variablen
  • Einfache lineare Regression = Korrelation
  • Keine Kausalaussagen möglich (wie auch bei Korrelationen)
  • Voraussetzungen: Normalverteilung der Residuen, Multikollinearität und Homoskedastizität
  • Nicht-parametrische Alternative: Poisson-Regression

Einfache lineare Regressionen

Argumente

model_1 <- lm(mean_rl_all ~ cvstm_propcorrect, data = dat_full)

summary(model_1)

Call:
lm(formula = mean_rl_all ~ cvstm_propcorrect, data = dat_full)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.1982 -0.6544 -0.1708  0.7555  3.5717 

Coefficients:
                  Estimate Std. Error t value             Pr(>|t|)    
(Intercept)         7.6277     0.8257   9.238 < 0.0000000000000002 ***
cvstm_propcorrect  -3.2993     1.1202  -2.945              0.00372 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.097 on 157 degrees of freedom
Multiple R-squared:  0.05236,   Adjusted R-squared:  0.04632 
F-statistic: 8.674 on 1 and 157 DF,  p-value: 0.003719

Regression: Output

Tabelle: Funktionen für Regressionen und verwandte Analysen in R

Funktion Beschreibung
lm(y ~ x) Einfache lineare Regression mit einer abhängigen Variablen y und einem Prädiktor x.
lm(y ~ x1 + x2) Multiple Regression mit einer abhängigen Variablen y und zwei Prädiktoren x1 und x2.
summary() Gibt die Ergebnisse der Regressionsanalyse für ein Regressionsmodell aus.
confint() Konfidenzintervalle für die Regressionskoeffizienten.
Funktion Beschreibung
fitted() Vorhergesagte Werte des Regressionsmodells.
resid() Residuen des Regressionsmodells.
predict() Vorhergesagte Werte für bestimmte Werte der Prädiktorvariablen.
anova() Vergleicht die Determinationskoeffizienten zweier Regressionsmodelle mit einem F-Test.
vif() * Variance Inflation Factors (VIF) für jeden Prädiktor; aus dem car-Paket.

* aus zusätzlichen Paketen

Hierarchische Regression

  • Man legt zwei oder mehr Regressionsmodelle an mit zunehmenden Prädiktoren

  • Dann vergleicht man diese Modelle mit anova(model1, model2). Gibt es einen signifikanten Zuwachs an aufgeklärter Varianz (siehe Determinationskoeffizient) von model1 zu model2?

Siehe hier: Lineare Regression mit R (einfach, multiple, hierarchisch)

Heute haben wir:

  • Basics der Datenvisualisierungen kennengelernt

    • Erstellung von Tabellen

    • ggplot()

  • Korrelationen und Regressionen in R kennengelernt

Reminder: R Übung bis Freitag 28.11, Peer Feedback über Forum bis 03.12.

Optionale Slide Korrelation = Einfache lineare Regression


    Pearson's product-moment correlation

data:  penguins$bill_length_mm and penguins$body_mass_g
t = 13.654, df = 340, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5220040 0.6595358
sample estimates:
      cor 
0.5951098 

Call:
lm(formula = bill_length_mm ~ body_mass_g, data = penguins)

Residuals:
     Min       1Q   Median       3Q      Max 
-10.1251  -3.0434  -0.8089   2.0711  16.1109 

Coefficients:
              Estimate Std. Error t value            Pr(>|t|)    
(Intercept) 26.8988724  1.2691478   21.19 <0.0000000000000002 ***
body_mass_g  0.0040514  0.0002967   13.65 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.394 on 340 degrees of freedom
  (2 observations deleted due to missingness)
Multiple R-squared:  0.3542,    Adjusted R-squared:  0.3523 
F-statistic: 186.4 on 1 and 340 DF,  p-value: < 0.00000000000000022
[1] 0.3541557